package ar.edu.utn.frgp.TPFinalBanco.dao.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import ar.edu.utn.frgp.TPFinalBanco.dao.CuentaDao;
import ar.edu.utn.frgp.TPFinalBanco.dao.DefaultGenericDao;
import ar.edu.utn.frgp.TPFinalBanco.model.Cuenta;

public class CuentaDaoImpl extends DefaultGenericDao implements CuentaDao {

	
	public void create(Cuenta obj) {
		Session session = hibernateTemplate.getSessionFactory()
				.getCurrentSession();
		session.save(obj);
	}

	
	public void update(Cuenta obj) {
		Session session = hibernateTemplate.getSessionFactory()
				.getCurrentSession();
		session.saveOrUpdate(obj);
		
	}

	public void delete(Cuenta obj) {
		Session session = hibernateTemplate.getSessionFactory()
				.getCurrentSession();
		session.delete(obj);
		
	}

	@SuppressWarnings("unchecked")
	public List<Cuenta> getAll() {
		Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
		
		List<Cuenta> cuentas = session.createCriteria(Cuenta.class).list();
		return cuentas;
	}
	
	public Cuenta getCuenta(Integer nroCuenta) {
		Session session = hibernateTemplate.getSessionFactory()
				.getCurrentSession();

		Cuenta cuenta = (Cuenta) session.get(Cuenta.class, nroCuenta);
		return cuenta;
	}
	
	@SuppressWarnings("unchecked")
	public List<Cuenta> getCuentas(String dni) {
		Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
		
		List<Cuenta> cuentas = session.createCriteria(Cuenta.class)
				.add(Restrictions.eq("cliente.getDni()",dni)).list();
				
		return cuentas;
	}
	
}
